The invention relates to methods and apparatus for personalization of printed documents.
Variable printing involves the production of printed pages that are each personalized while sharing a common structure and content with other pages. As a very simple example, if many copies of a document are to be printed, a user may define the document so that each printed page includes a reusable element, such as a border or corporate logo, and a single-use element, such as a person""s name and address.
In conventional variable printing systems, the reusable element is rendered and stored in a cache, from which it is copied as needed into a frame buffer, and the single-use element is rendered by a raster image processor (commonly called a xe2x80x9cRIPxe2x80x9d) to produce a pixelmap (which may be one or more bits deep) and a mask. The mask identifies which of the pixels of the pixelmap are to be painted into a frame buffer to appear on a printed page. The single-use pixelmap is composited with the reusable element in the frame buffer by a compositor. When the page (or band or other unit of printing) in the frame buffer is complete, the page is transmitted to a print engine for printing.
A raster image processor creates raster data from page description language (PDL) data. A PDL is a high level language for describing graphical objects (such as text, vector-based art, raster images, and so on) to be displayed by an output device. Two examples of page description languages are the PostScript(copyright) language and the Portable Document Format (PDF) language, both of which are supported by-products available from Adobe Systems Incorporated of San Jose, Calif. (xe2x80x9cAdobe Systemsxe2x80x9d). In general, raster image processing (also called rendering) involves converting PDL data into a raster format (such as a rectangular pixelmap that is one or more bits deep) for printing or other form of display. Raster image processing may occur in the printer side or the host side of a printing process.
The above-described process of variable printing commonly results in either the RIP or the compositor being idle at times. For example, during the latter stages of a print run when the cache already contains all the necessary reusable data, the RIP may be idle while the compositor is busy. In addition, for a complex page containing many single-use and/or reusable elements, the composition process may be slower than the speed of the high-speed print engine. Consequently, during a print run, multiple blank sheets may be printed during portions of the compositing process, thereby slowing the entire print operation and wasting paper.
The invention provides methods and apparatus, including computer programs, that implement techniques that are useful in the context of variable printing.
In general, in one aspect, the invention features a technique for rendering a description of a print area, the description including graphical objects and a paint order for the graphical objects, the graphical objects including one or more reusable objects and one or more other objects. The technique includes rendering the reusable objects and storing the resulting raster data in a cache; and then rendering and compositing the print area by painting the reusable objects and the other objects in the paint order into a frame buffer memory, the reusable objects being read as raster data from the cache and composited into the frame buffer memory, and the other objects being rendered directly into the frame buffer as the other objects are required by the paint order.
Implementations of the invention can include the following advantageous features. The print area is at least a part of a page, and technique includes receiving a page description language description input stream that includes a description of the page, the reusable objects, and the other objects, that also includes page layout information specifying the positions of the reusable objects and of the other objects on the page, and that also includes information identifying graphical objects as reusable. The input stream is expressed in elements of the Portable Document Format (PDF) version 1.2 page description language; and the information identifying a graphical object as reusable includes the presence of an XUID attribute in a form object. The raster data resulting from the rendering of the reusable objects includes data specifying which pixels of the raster data are transparent. The data specifying transparent pixels is a bitmap mask. The reusable objects include two objects overlapping each other on the print area. The technique includes making the contents of the frame buffer memory available to a print engine when rendering of the print area is completed. The technique includes receiving the reusable objects and the other objects in a print data stream in the Portable Document Format page description language, the print data stream including page layout information specifying the positions of the reusable objects and the other objects on a page. The print area is a page. The cache includes disk storage, and the frame buffer memory is an assigned portion of a random access memory. The technique includes providing multiple integrated rasterizer-compositors; for each of the reusable objects, assigning one of the multiple rasterizer-compositors to render the reusable object; and assigning one of the multiple rasterizer-compositors to render the print area, where any or all of the selected rasterizer-compositors can be the same or different rasterizer-compositors. The technique includes providing a selector to receive the description of the print area, to assign rasterizer-compositors to render reusable objects, and to assign a rasterizer-compositors to render the print area. The technique includes communicating, to the rasterizer-compositor selected to render the print area, the graphical objects to be printed on the print area and the paint order of the graphical objects.
In general, in another aspect, the invention features a technique for preparing personalized pages for printing. The technique includes receiving an input stream describing multiple personalized pages in terms of graphical objects including reusable objects and other objects; rendering each reusable object and caching the resulting raster data for multiple use on one or more of the personalized pages; and rendering a first page of the personalized pages by compositing a first and a second reusable object and a first other object, rendering a second page of the personalized pages by compositing the first reusable object and a third reusable object different from the second reusable object and a second other object different from the first other object, the first page not including the third reusable object and the second page not including the second reusable object. Implementations of the invention can include the following advantageous features. The resulting raster data includes data identifying transparent pixels. The raster data resulting from reusable objects is stored in a cache before compositing into a page; and the other objects are painting by rendering and compositing into a composited page on the fly.
In general, in another aspect, the invention features a technique for preparing personalized pages for printing on a variable printing system. The technique includes providing a print data stream describing multiple personalized pages in terms of graphical objects including reusable objects and other objects; providing a first-level set of one or more reusable objects, each of which appears on each of the multiple personalized pages; and providing a second-level set of two or more reusable objects, no more than one of which appears on any of the multiple personalized pages. Implementations of the invention can include the following advantageous features. The technique includes providing a third-level set of two or more reusable objects, each third-level reusable object being different from all the reusable objects in the second-level set, and no more than one of the third-level reusable objects appearing on any of the multiple personalized pages. The technique includes providing multiple third-level sets of reusable objects, each of the multiple third-level sets corresponding to one of the second-level objects in the second-level set, each third-level object appearing only in a page in which the corresponding second-level object appears.
In general, in another aspect, the invention features apparatus for use in a printing system for printing pages described by page description language input. The apparatus includes an integrated rasterizer-compositor module having means for rendering page description language objects into raster data and means for compositing raster data into a frame buffer. Implementations of the invention can include the following advantageous features. The apparatus includes a connector operable to connect the module physically and electrically to a bus configured to receive multiple such rasterizer-compositor modules. The bus is operatively coupled to a cache memory device. The printing system is a variable printing system configured to receive multiple integrated rasterizer-compositor modules.
In general, in another aspect, the invention features apparatus for use in a printing system for printing pages described by page description language input. The apparatus includes an integrated rasterizer-compositor module having a processor subsystem coupled to a memory subsystem, the processor subsystem including one or more processors operable to execute program instructions stored in the memory subsystem, the memory subsystem being configured with instructions to cause the processor subsystem to render page description language reusable objects into raster data reusable objects and causing the raster data reusable objects to be stored in a cache; and composite page description language reusable objects and other objects into a frame buffer by reading reusable object raster data from the cache and compositing the raster data into the frame buffer and by rendering and compositing other objects into the frame buffer on the fly as such other objects are called for by a paint order applicable to the frame buffer.
In general, in another aspect, the invention features apparatus for use in a printing system for printing pages described by page description language input. The apparatus includes a scheduler that has a programmable processor and a memory storing a program with instructions for causing the processor to receive from an input stream a description identifying the objects required for a print area, the paint order of the required objects, and the required objects themselves or pointers to the required objects, the required objects being either identified as reusable objects or not so identified; to cause only the reusable objects to be rendered and stored in a cache before being used in compositing the print area; to maintain a page object list, being a data structure holding information about each required object, including the location of each required object on the print area; and to cause the print area to be composited according to the paint order and the page object list. Implementations of the invention can include the following advantageous features. The program further includes instructions to assign a reusable object to a first integrated rasterizer-compositor for rendering; and to assign the page area to a second integrated rasterizer-compositor for rendering and compositing. The program further includes instructions to assign to the first rasterizer-compositor a frame buffer memory.
In general, in another aspect, the invention features a technique for preparing personalized pages for printing. The technique includes receiving an input stream describing multiple personalized pages in terms of graphical objects including reusable objects and other objects; receiving in the input stream a paint order for each page of the multiple personalized pages, the paint order for a page specifying the order of painting the graphical objects on the page; rendering each reusable object and storing the resulting raster data before using the resulting raster data in compositing any of the multiple pages; and compositing each page by painting into a frame buffer the graphical objects for the page in the paint order for the page, each reusable object being painted by compositing into the frame buffer the previously-stored resulting raster data for the reusable object, and each other object being rendered and composited into a page directly as the other object is called for by the paint order.
Advantages that may be seen in implementations of the invention include one or more of the following. Using parallel integrated processors to render single-use objects on demand into a frame buffer provides inexpensive high-speed printing of personalized data, and provides a relatively simple apparatus. Mask data need not be generated for single-use objects.
An integrated rasterizer-compositor can use the same hardware processor to perform both rendering and compositing functions.
A system implementing methods of the invention can print documents defined as having multiple levels of reuse, so that a tree of reuse can be defined, for example, with a root that includes objects that appear on all pages, leaves that include single-use objects, and intermediate nodes that include different reusable objects. The system maintains reusable objects in rendered form in a cache and renders each page from its own page list of reusable and single-use objects. The system can easily be used, for example, to print a personalized mailing in which every page has the same map of the United States and the unique address of the recipient, and in which the city of the recipient is a reusable object printed over the state of the recipient, which is a reusable object printed over the United States.
Other features and advantages of the invention will become apparent from the following description and from the claims.